// function Zhang(config={}){
//     // $data相当于之前学习过程中的临时的变量
//     this.$data = config.data;
//     // 1- this.$data有哪些属性那么就让当前实例有哪些属性。
//     // 2- 当前实例属性发生改变，会影响到this.$data.
//     for(let key in this.$data){
//        Object.defineProperty(this,key,{
//            get(){
//                return this.$data[key];
//            },
//            set(v){
//                this.$data[key] = v;
//            }
//        })
//     }
//
//     for(let key in config.methods){
//         this[key] = config.methods[key];
//     }
// }


function Zhang(config={}){
    // $data相当于之前学习过程中的临时的变量
    this.$data = config.data;
   this.initMethods(config);
   this.initState();

}

Zhang.prototype.initState = function(){
    for(let key in this.$data){
        this.proxy(key);
    }

}
Zhang.prototype.initMethods = function(config){
    for(let key in config.methods){
        this[key] = config.methods[key];
    }
}
Zhang.prototype.proxy = function(key){
    Object.defineProperty(this,key,{
        get(){
            return this.$data[key];
        },
        set(v){
            this.$data[key] = v;
        }
    })
}

